<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">{{name}}</div>
    <script src="../dist/vue.js"></script>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                name: 'zf'
            }
        });
        setTimeout(() => {
            vm.$nextTick(() => {
                vm.name = 'zf'
            });
            vm.name = 100; // 会渲染一次
        }, 0);
        vm.name = 'xxx'; // 渲染逻辑是异步的  


        // Promise.resolve().then(() => {
        //     () => {
        //         Promise.resolve().then(() => {

        //         })
        //     }
        //     () => {

        //     }
        // })


        // queueWatcher 是为了去重watcher的和 更新处理没关系


        // 1.默认会有两次nextTick [用户的，渲染的]

        // 刷新队列  [vm.name = 'xxx'的nextTick] 走第一个函数的时候页面就是zf
        // 


        // 2.当刷新nextTick队列的时候 再次触发vm.name = 1  会产生一个新的渲染逻辑



        // 先把用户的nextTick 放到了队列中，之后又将更新放到了队列中  最终调用队列中的第一个的时候 会再次放入一个渲染逻辑
    </script>
</body>

</html>